home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / modula2 / granule / storbase.def next >
Encoding:
Text File  |  1994-09-22  |  2.2 KB  |  66 lines

  1. (*-------------------------------------------------------------------------
  2.              Bitte DEFINITION MODULE zum compilieren auslagern!
  3.   -------------------------------------------------------------------------
  4. DEFINITION MODULE StorBase;
  5.  
  6. FROM    SYSTEM          IMPORT  ADDRESS;
  7.  
  8.  
  9. PROCEDURE allocate (VAR adr: ADDRESS; bytes: LONGCARD; mark: BOOLEAN);
  10. (* Belegt Speicher ab adr mit bytes Bytes. Wenn Dynamic = TRUE
  11.  * (siehe Prozedur dynamic) wird bei einem Heapüberlauf ein weiteres
  12.  * Speichersegment angefordert und in den Heap integriert. Wenn FALSE
  13.  * oder kein Speicher mehr zu Verfügung steht, wird adr NIL gesetzt.
  14.  *)
  15.  
  16. PROCEDURE dealloc (VAR Addr: ADDRESS; Amount: LONGCARD; mark: BOOLEAN);
  17.  
  18. PROCEDURE deallocrest (VAR adr: ADDRESS; Amount: LONGCARD; 
  19.                        VAR new: LONGCARD; mark: BOOLEAN);
  20. (* gibt mit allocate belegten Speicher frei
  21.  * Ist new = 0 wird der komplette Block freigegeben, ansonsten ist new
  22.  * die neue Größe des Blocks.  Der freizugebende Teil wird am Ende des
  23.  * Blocks abgezwackt.
  24.  *)
  25.  
  26. PROCEDURE createheap (bytes: LONGCARD): INTEGER;
  27. (* Installiert den Heap mit bytes Byte. Liefert einen Fehlercode mit
  28.  * folgender Bedeutung:
  29.  *
  30.  *  0   = Kein Fehler, Heap wurde installiert
  31.  * -1   = Kein Speicher in ausreichender Größe zur Verfügung
  32.  * -2   = Heap ist bereits installiert
  33.  *)
  34.  
  35. PROCEDURE dynamic (dyn: BOOLEAN);
  36. (* Schaltet die Dynamic-Option des Heaps.
  37.  * TRUE  = allocate fordert bei Heapüberlauf neues Speichersegment an.
  38.  * FALSE = allocate liefert bei Heapüberlauf NIL
  39.  *)
  40.  
  41. PROCEDURE setDefaultSize (size: LONGCARD);
  42. (* Setzt die Standard-Heapgröße, um die der Heap erweitert wird *) 
  43.  
  44. PROCEDURE free (): LONGCARD;
  45. (* Liefert Anzahl der Bytes, die auf dem Heap frei sind *)
  46.  
  47. PROCEDURE heapbase (): ADDRESS;
  48. (* erster Block des Heaps *)
  49.  
  50. PROCEDURE granulemarked (addr: ADDRESS): BOOLEAN;
  51. (* TRUE, wenn der Block in der Lispmap ausgetragen ist *)
  52.  
  53. PROCEDURE usedgran (mark: BOOLEAN): LONGCARD;
  54. (* Anzahl der benutzten Granules *)
  55.  
  56. PROCEDURE memAvail (): LONGCARD;
  57. (* liefert die Anzahl aller freien Bytes sowohl im Heap, als auch im
  58.  * noch nicht allozierten Speicher -  abzüglich der GEMDOS-Reserve 
  59.  * (Konstante GEMReserve)
  60.  *)
  61.  
  62.  
  63. CONST cgrain = 16;
  64.  
  65. END StorBase.
  66. ə